// Loesung_von_Aufgabe_5.6_3_Fouriersynthese_Dreieck

// Fouriersynthese eines Dreieckssignals

float A = 150; // Amplitude
float y;
float y1;
float y2;
float y3;
float y4;
float yvor;
float y1vor;
float y2vor;
float y3vor;
float y4vor;
float xvor;

void setup()
{
  size(600, 400);
  background(200);
  line(0, height/2, width, height/2);
}

void draw()
{
  translate(0, 200);
  for (float w = 0, x = 0; x <= width; w = w + 0.1*PI/120, x = x + 0.1)
  {
    y1 = A*sin(w); // grün
    y2 = -(A/pow(3, 2))*sin(3*w); // blau
    y3 = (A/pow(5, 2))*sin(5*w); // violett
    y4 = -(A/pow(7, 2))*sin(7*w); // gelb
    xvor = x;
    y1vor = y1;
    y2vor = y2;
    y3vor = y3;
    y4vor = y4;

    strokeWeight(2);
    stroke(0, 255, 0);
    line(xvor, y1vor, x, y1);
    stroke(0, 0, 255);
    line(xvor, y2vor, x, y2);
    stroke(255, 255, 0);
    line(xvor, y3vor, x, y3);
    stroke(255, 0, 255);
    line(xvor, y4vor, x, y4);

    stroke(255, 0, 0);
    strokeWeight(5);
    y = y1 + y2 + y3 + y4;
    xvor = x;
    yvor = y;
    line(xvor, yvor, x, y);
  }
}